//
//  YFRefreshView.swift
//  仿新浪微博
//
//  Created by 杨帆 on 16/7/10.
//  Copyright © 2016年 杨帆. All rights reserved.
//

import UIKit

// 刷新视图 - 负责刷新UI相关的动画和显示
class YFRefreshView: UIView {
    
    // 刷新状态
//    iOS 系统中 UIView 封装的旋转动画
//    - 默认顺时针旋转
//    - 就近原则
//    - 要想实现同方向旋转，需要调整一个 非常小的数字(近)
//    - 如果想实现 360 旋转，需要核心动画 CABaseAnimation

    var refreshState: YFrefreshState = .Normal {
    
        didSet {
        
            switch refreshState {
            case .Normal:
                
                // 恢复状态
                tipIcon?.isHidden = false
                indicator?.stopAnimating()
                tipLabel?.text = "继续使劲拉.."
                
                UIView.animate(withDuration: 0.25) {
                    
                    self.tipIcon?.transform = CGAffineTransform.identity
                    
                }
            case .Pulling:
                tipLabel?.text = "放手就刷新.."
                
                UIView.animate(withDuration: 0.25) {
                    
                    self.tipIcon?.transform = CGAffineTransform(rotationAngle: CGFloat(M_PI + 0.001))
                }
            case .WillRefresh:
                tipLabel?.text = "正在刷新中..."
                
                // 隐藏提示图标
                tipIcon?.isHidden = true
                
                // 显示菊花
                indicator?.startAnimating()

            }
        }
    }
    
    // 父视图的高度 刷新控件不需要关系当前的具体刷新视图是谁
    var parentViewHeight: CGFloat = 0
    
    // 指示器
    @IBOutlet weak var indicator: UIActivityIndicatorView?
    // 提示图标
    @IBOutlet weak var tipIcon: UIImageView?
    // 提示标签
    @IBOutlet weak var tipLabel: UILabel?
    
    class func refreshView() ->YFRefreshView {
    
        let nib = UINib(nibName: "YFMeiTuanRefreshView", bundle: nil)
        
        return nib.instantiate(withOwner: nil, options: nil)[0] as! YFRefreshView
    }

}
